Micron Document
🎖️GitЯра🎖️


Displaying Raw • Download

core/navigation/src/commonTest/kotlin/org/meshtastic/core/navigation/NavBackStackExtTest.kt 520fa717a938fd84682403b41f57d9f7e1ef49ef (520fa717) Text, 4.64 KB

T8b949e/*
* Copyright (c) 2026 Meshtastic LLC
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
Tff7b72package T7ee787org.meshtastic.core.navigation

Tff7b72import T7ee787androidx.navigation3.runtime.NavKey
Tff7b72import T7ee787kotlin.test.Test
Tff7b72import T7ee787kotlin.test.assertEquals

Tff7b72class T56d364NavBackStackExtTest Tb4b4b4{

T8b949e// region replaceLast

Tf0883e@Test
Tff7b72fun Td2a8ff`replaceLast on non-empty list replaces the last element`Tb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72val Te6edf3stack Tff7b72= Te6edf3mutableListOfTff7b72<Te6edf3NavKeyTff7b72>Tb4b4b4(Te6edf3NodesRouteTb4b4b4.Te6edf3NodesGraphTb4b4b4, Te6edf3NodesRouteTb4b4b4.Te6edf3NodesTb4b4b4)
Te6edf3stackTb4b4b4.Te6edf3replaceLastTb4b4b4(Te6edf3NodesRouteTb4b4b4.Te6edf3NodeDetailTb4b4b4(Te6edf3destNum Tff7b72= T79c0ff4T79c0ff2Tb4b4b4)Tb4b4b4)

Te6edf3assertEqualsTb4b4b4(T79c0ff2Tb4b4b4, Te6edf3stackTb4b4b4.Te6edf3sizeTb4b4b4)
Te6edf3assertEqualsTb4b4b4(Te6edf3NodesRouteTb4b4b4.Te6edf3NodesGraphTb4b4b4, Te6edf3stackTff7b72[T79c0ff0Tff7b72]Tb4b4b4)
Te6edf3assertEqualsTb4b4b4(Te6edf3NodesRouteTb4b4b4.Te6edf3NodeDetailTb4b4b4(Te6edf3destNum Tff7b72= T79c0ff4T79c0ff2Tb4b4b4)Tb4b4b4, Te6edf3stackTff7b72[T79c0ff1Tff7b72]Tb4b4b4)
Tb4b4b4}

Tf0883e@Test
Tff7b72fun Td2a8ff`replaceLast on single-element list replaces that element`Tb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72val Te6edf3stack Tff7b72= Te6edf3mutableListOfTff7b72<Te6edf3NavKeyTff7b72>Tb4b4b4(Te6edf3NodesRouteTb4b4b4.Te6edf3NodesGraphTb4b4b4)
Te6edf3stackTb4b4b4.Te6edf3replaceLastTb4b4b4(Te6edf3SettingsRouteTb4b4b4.Te6edf3SettingsGraphTb4b4b4(Tb4b4b4)Tb4b4b4)

Te6edf3assertEqualsTb4b4b4(T79c0ff1Tb4b4b4, Te6edf3stackTb4b4b4.Te6edf3sizeTb4b4b4)
Te6edf3assertEqualsTb4b4b4(Te6edf3SettingsRouteTb4b4b4.Te6edf3SettingsGraphTb4b4b4(Tb4b4b4)Tb4b4b4, Te6edf3stackTff7b72[T79c0ff0Tff7b72]Tb4b4b4)
Tb4b4b4}

Tf0883e@Test
Tff7b72fun Td2a8ff`replaceLast on empty list adds the element`Tb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72val Te6edf3stack Tff7b72= Te6edf3mutableListOfTff7b72<Te6edf3NavKeyTff7b72>Tb4b4b4(Tb4b4b4)
Te6edf3stackTb4b4b4.Te6edf3replaceLastTb4b4b4(Te6edf3NodesRouteTb4b4b4.Te6edf3NodesTb4b4b4)

Te6edf3assertEqualsTb4b4b4(T79c0ff1Tb4b4b4, Te6edf3stackTb4b4b4.Te6edf3sizeTb4b4b4)
Te6edf3assertEqualsTb4b4b4(Te6edf3NodesRouteTb4b4b4.Te6edf3NodesTb4b4b4, Te6edf3stackTff7b72[T79c0ff0Tff7b72]Tb4b4b4)
Tb4b4b4}

Tf0883e@Test
Tff7b72fun Td2a8ff`replaceLast with same element does not mutate`Tb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72val Te6edf3route Tff7b72= Te6edf3NodesRouteTb4b4b4.Te6edf3Nodes
Tff7b72val Te6edf3stack Tff7b72= Te6edf3mutableListOfTff7b72<Te6edf3NavKeyTff7b72>Tb4b4b4(Te6edf3NodesRouteTb4b4b4.Te6edf3NodesGraphTb4b4b4, Te6edf3routeTb4b4b4)
Te6edf3stackTb4b4b4.Te6edf3replaceLastTb4b4b4(Te6edf3routeTb4b4b4)

Te6edf3assertEqualsTb4b4b4(T79c0ff2Tb4b4b4, Te6edf3stackTb4b4b4.Te6edf3sizeTb4b4b4)
Te6edf3assertEqualsTb4b4b4(Te6edf3routeTb4b4b4, Te6edf3stackTff7b72[T79c0ff1Tff7b72]Tb4b4b4)
Tb4b4b4}

T8b949e// endregion

T8b949e// region replaceAll

Tf0883e@Test
Tff7b72fun Td2a8ff`replaceAll replaces entire stack with new routes`Tb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72val Te6edf3stack Tff7b72= Te6edf3mutableListOfTff7b72<Te6edf3NavKeyTff7b72>Tb4b4b4(Te6edf3NodesRouteTb4b4b4.Te6edf3NodesGraphTb4b4b4, Te6edf3NodesRouteTb4b4b4.Te6edf3NodesTb4b4b4)
Tff7b72val Te6edf3newRoutes Tff7b72= Te6edf3listOfTff7b72<Te6edf3NavKeyTff7b72>Tb4b4b4(Te6edf3SettingsRouteTb4b4b4.Te6edf3SettingsGraphTb4b4b4(Tb4b4b4)Tb4b4b4, Te6edf3SettingsRouteTb4b4b4.Te6edf3AboutTb4b4b4)

Te6edf3stackTb4b4b4.Te6edf3replaceAllTb4b4b4(Te6edf3newRoutesTb4b4b4)

Te6edf3assertEqualsTb4b4b4(Te6edf3newRoutesTb4b4b4, Te6edf3stackTb4b4b4)
Tb4b4b4}

Tf0883e@Test
Tff7b72fun Td2a8ff`replaceAll with shorter list trims excess elements`Tb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72val Te6edf3stack Tff7b72= Te6edf3mutableListOfTff7b72<Te6edf3NavKeyTff7b72>Tb4b4b4(Te6edf3NodesRouteTb4b4b4.Te6edf3NodesGraphTb4b4b4, Te6edf3NodesRouteTb4b4b4.Te6edf3NodesTb4b4b4, Te6edf3NodesRouteTb4b4b4.Te6edf3NodeDetailTb4b4b4(Te6edf3destNum Tff7b72= T79c0ff4T79c0ff2Tb4b4b4)Tb4b4b4)
Tff7b72val Te6edf3newRoutes Tff7b72= Te6edf3listOfTff7b72<Te6edf3NavKeyTff7b72>Tb4b4b4(Te6edf3SettingsRouteTb4b4b4.Te6edf3SettingsGraphTb4b4b4(Tb4b4b4)Tb4b4b4)

Te6edf3stackTb4b4b4.Te6edf3replaceAllTb4b4b4(Te6edf3newRoutesTb4b4b4)

Te6edf3assertEqualsTb4b4b4(T79c0ff1Tb4b4b4, Te6edf3stackTb4b4b4.Te6edf3sizeTb4b4b4)
Te6edf3assertEqualsTb4b4b4(Te6edf3SettingsRouteTb4b4b4.Te6edf3SettingsGraphTb4b4b4(Tb4b4b4)Tb4b4b4, Te6edf3stackTff7b72[T79c0ff0Tff7b72]Tb4b4b4)
Tb4b4b4}

Tf0883e@Test
Tff7b72fun Td2a8ff`replaceAll with longer list appends new elements`Tb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72val Te6edf3stack Tff7b72= Te6edf3mutableListOfTff7b72<Te6edf3NavKeyTff7b72>Tb4b4b4(Te6edf3NodesRouteTb4b4b4.Te6edf3NodesGraphTb4b4b4)
Tff7b72val Te6edf3newRoutes Tff7b72= Te6edf3listOfTff7b72<Te6edf3NavKeyTff7b72>Tb4b4b4(Te6edf3NodesRouteTb4b4b4.Te6edf3NodesGraphTb4b4b4, Te6edf3NodesRouteTb4b4b4.Te6edf3NodesTb4b4b4, Te6edf3NodesRouteTb4b4b4.Te6edf3NodeDetailTb4b4b4(Te6edf3destNum Tff7b72= T79c0ff9T79c0ff9Tb4b4b4)Tb4b4b4)

Te6edf3stackTb4b4b4.Te6edf3replaceAllTb4b4b4(Te6edf3newRoutesTb4b4b4)

Te6edf3assertEqualsTb4b4b4(Te6edf3newRoutesTb4b4b4, Te6edf3stackTb4b4b4)
Tb4b4b4}

Tf0883e@Test
Tff7b72fun Td2a8ff`replaceAll with empty list clears the stack`Tb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72val Te6edf3stack Tff7b72= Te6edf3mutableListOfTff7b72<Te6edf3NavKeyTff7b72>Tb4b4b4(Te6edf3NodesRouteTb4b4b4.Te6edf3NodesGraphTb4b4b4, Te6edf3NodesRouteTb4b4b4.Te6edf3NodesTb4b4b4)

Te6edf3stackTb4b4b4.Te6edf3replaceAllTb4b4b4(Te6edf3emptyListTb4b4b4(Tb4b4b4)Tb4b4b4)

Te6edf3assertEqualsTb4b4b4(T79c0ff0Tb4b4b4, Te6edf3stackTb4b4b4.Te6edf3sizeTb4b4b4)
Tb4b4b4}

Tf0883e@Test
Tff7b72fun Td2a8ff`replaceAll on empty stack with new routes populates it`Tb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72val Te6edf3stack Tff7b72= Te6edf3mutableListOfTff7b72<Te6edf3NavKeyTff7b72>Tb4b4b4(Tb4b4b4)
Tff7b72val Te6edf3newRoutes Tff7b72= Te6edf3listOfTff7b72<Te6edf3NavKeyTff7b72>Tb4b4b4(Te6edf3ContactsRouteTb4b4b4.Te6edf3ContactsGraphTb4b4b4, Te6edf3ContactsRouteTb4b4b4.Te6edf3ContactsTb4b4b4)

Te6edf3stackTb4b4b4.Te6edf3replaceAllTb4b4b4(Te6edf3newRoutesTb4b4b4)

Te6edf3assertEqualsTb4b4b4(Te6edf3newRoutesTb4b4b4, Te6edf3stackTb4b4b4)
Tb4b4b4}

Tf0883e@Test
Tff7b72fun Td2a8ff`replaceAll with identical routes does not mutate entries`Tb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72val Te6edf3routes Tff7b72= Te6edf3listOfTff7b72<Te6edf3NavKeyTff7b72>Tb4b4b4(Te6edf3NodesRouteTb4b4b4.Te6edf3NodesGraphTb4b4b4, Te6edf3NodesRouteTb4b4b4.Te6edf3NodesTb4b4b4)
Tff7b72val Te6edf3stack Tff7b72= Te6edf3routesTb4b4b4.Te6edf3toMutableListTb4b4b4(Tb4b4b4)

Te6edf3stackTb4b4b4.Te6edf3replaceAllTb4b4b4(Te6edf3routesTb4b4b4)

Te6edf3assertEqualsTb4b4b4(Te6edf3routesTb4b4b4, Te6edf3stackTb4b4b4)
Tb4b4b4}

Tf0883e@Test
Tff7b72fun Td2a8ff`replaceAll with partial overlap only changes differing elements`Tb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72val Te6edf3stack Tff7b72= Te6edf3mutableListOfTff7b72<Te6edf3NavKeyTff7b72>Tb4b4b4(Te6edf3NodesRouteTb4b4b4.Te6edf3NodesGraphTb4b4b4, Te6edf3NodesRouteTb4b4b4.Te6edf3NodesTb4b4b4, Te6edf3NodesRouteTb4b4b4.Te6edf3NodeDetailTb4b4b4(Te6edf3destNum Tff7b72= T79c0ff1Tb4b4b4)Tb4b4b4)
Tff7b72val Te6edf3newRoutes Tff7b72=
Te6edf3listOfTff7b72<Te6edf3NavKeyTff7b72>Tb4b4b4(
Te6edf3NodesRouteTb4b4b4.Te6edf3NodesGraphTb4b4b4, T8b949e// same
Te6edf3SettingsRouteTb4b4b4.Te6edf3AboutTb4b4b4, T8b949e// different
Tb4b4b4)

Te6edf3stackTb4b4b4.Te6edf3replaceAllTb4b4b4(Te6edf3newRoutesTb4b4b4)

Te6edf3assertEqualsTb4b4b4(T79c0ff2Tb4b4b4, Te6edf3stackTb4b4b4.Te6edf3sizeTb4b4b4)
Te6edf3assertEqualsTb4b4b4(Te6edf3NodesRouteTb4b4b4.Te6edf3NodesGraphTb4b4b4, Te6edf3stackTff7b72[T79c0ff0Tff7b72]Tb4b4b4)
Te6edf3assertEqualsTb4b4b4(Te6edf3SettingsRouteTb4b4b4.Te6edf3AboutTb4b4b4, Te6edf3stackTff7b72[T79c0ff1Tff7b72]Tb4b4b4)
Tb4b4b4}

T8b949e// endregion
Tb4b4b4}

Served by rngit 1.5.0 - Generated in 0.05s